home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 30
/
Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso
/
Aminet
/
gfx
/
misc
/
gnuplot-3.7src.lha
/
gnuplot-3.7src
/
gnuplot-3.7.lha
/
gnuplot-3.7
/
term
/
object.h
< prev
next >
Wrap
C/C++ Source or Header
|
1998-04-15
|
12KB
|
418 lines
/*
* FIG : Facility for Interactive Generation of figures
* Copyright (c) 1985 by Supoj Sutanthavibul
* Parts Copyright (c) 1994 by Brian V. Smith
* Parts Copyright (c) 1991 by Paul King
*
* The X Consortium, and any party obtaining a copy of these files from
* the X Consortium, directly or indirectly, is granted, free of charge, a
* full and unrestricted irrevocable, world-wide, paid up, royalty-free,
* nonexclusive right and license to deal in this software and
* documentation files (the "Software"), including without limitation the
* rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons who receive
* copies from any such party to do so, with the only requirement being
* that this copyright notice remain intact. This license includes without
* limitation a license to do the foregoing actions under any patents of
* the party supplying this software to the X Consortium.
*/
/* This file has been modified for use with Gnuplot 3.6 by
* Ian MacPhedran.
*/
/* DEFAULT is used for many things - font, color etc */
#define DEFAULT (-1)
#define SOLID_LINE 0
#define DASH_LINE 1
#define DOTTED_LINE 2
#define RUBBER_LINE 3
#define PANEL_LINE 4
#define Color int
#define BLACK 0
#define BLUE 1
#define GREEN 2
#define CYAN 3
#define RED 4
#define MAGENTA 5
#define YELLOW 6
#define WHITE 7
/** VERY IMPORTANT: The f_line, f_spline and f_arc objects all must have the
components up to and including the arrows in the same order.
This is for the get/put_generic_arrows() in e_edit.c.
**/
typedef struct f_point {
int x, y;
}
F_point;
typedef struct f_pos {
int x, y;
}
F_pos;
#define DEF_ARROW_WID (4 * ZOOM_FACTOR)
#define DEF_ARROW_HT (8 * ZOOM_FACTOR)
typedef struct f_arrow {
int type;
int style;
float thickness;
float wid;
float ht;
}
F_arrow;
typedef struct f_ellipse {
int tagged;
int distrib;
int type;
#define T_ELLIPSE_BY_RAD 1
#define T_ELLIPSE_BY_DIA 2
#define T_CIRCLE_BY_RAD 3
#define T_CIRCLE_BY_DIA 4
int style;
int thickness;
Color pen_color;
Color fill_color;
int fill_style;
int depth;
float style_val;
int pen_style;
float angle;
int direction;
#define UNFILLED -1
struct f_pos center;
struct f_pos radiuses;
struct f_pos start;
struct f_pos end;
struct f_ellipse *next;
}
F_ellipse;
/* SEE NOTE AT TOP BEFORE CHANGING ANYTHING IN THE f_arc STRUCTURE */
typedef struct f_arc {
int tagged;
int distrib;
int type;
/* note: these arc types are the internal values */
/* in the file, they are open=1, wedge=2 */
#define T_OPEN_ARC 0
#define T_PIE_WEDGE_ARC 1
int style;
int thickness;
Color pen_color;
Color fill_color;
int fill_style;
int depth;
int pen_style;
struct f_arrow *for_arrow;
struct f_arrow *back_arrow;
/* THE PRECEDING VARS MUST BE IN THE SAME ORDER IN f_arc, f_line and f_spline */
int cap_style;
float style_val;
int direction;
struct {
float x, y;
} center;
struct f_pos point[3];
struct f_arc *next;
}
F_arc;
#define CLOSED_PATH 0
#define OPEN_PATH 1
#define DEF_BOXRADIUS 7
#define DEF_DASHLENGTH 4
#define DEF_DOTGAP 3
typedef struct f_pic {
#ifndef PATH_MAX
#define PATH_MAX 128
#endif
char file[PATH_MAX];
int subtype;
#define T_PIC_EPS 1
#define T_PIC_BITMAP 2
#define T_PIC_PIXMAP 3
#define T_PIC_GIF 4
#define FileInvalid -2
int flipped;
unsigned char *bitmap;
int numcols; /* number of colors in cmap */
float hw_ratio;
int size_x, size_y; /* fig units */
struct f_pos bit_size; /* pixels */
Color color; /* only used for XBM */
int pix_rotation, pix_width, pix_height, pix_flipped;
}
F_pic;
extern char EMPTY_PIC[];
/* SEE NOTE AT TOP BEFORE CHANGING ANYTHING IN THE f_line STRUCTURE */
typedef struct f_line {
int tagged;
int distrib;
int type;
#define T_POLYLINE 1
#define T_BOX 2
#define T_POLYGON 3
#define T_ARC_BOX 4
#define T_PIC_BOX 5
int style;
int thickness;
Color pen_color;
Color fill_color;
int fill_style;
int depth;
int pen_style;
struct f_arrow *for_arrow;
struct f_arrow *back_arrow;
/* THE PRECEDING VARS MUST BE IN THE SAME ORDER IN f_arc, f_line and f_spline */
int cap_style; /* line cap style - Butt, Round, Bevel */
#define CAP_BUTT 0
#define CAP_ROUND 1
#define CAP_PROJECT 2
struct f_point *points; /* this must immediately follow cap_style */
int join_style; /* join style - Miter, Round, Bevel */
#define JOIN_MITER 0
#define JOIN_ROUND 1
#define JOIN_BEVEL 2
float style_val;
int radius; /* corner radius for T_ARC_BOX */
struct f_pic *pic;
struct f_line *next;
}
F_line;
typedef struct f_text {
int tagged;
int distrib;
int type;
#define T_LEFT_JUSTIFIED 0
#define T_CENTER_JUSTIFIED 1
#define T_RIGHT_JUSTIFIED 2
int font;
/* PIX_FONT fontstruct; */
int size; /* point size */
Color color;
int depth;
float angle; /* in radians */
int flags;
#define RIGID_TEXT 1
#define SPECIAL_TEXT 2
#define PSFONT_TEXT 4
#define HIDDEN_TEXT 8
int ascent; /* Fig units */
int length; /* Fig units */
int descent; /* from XTextExtents(), not in file */
int base_x;
int base_y;
int pen_style;
char *cstring;
struct f_text *next;
}
F_text;
#define MAXFONT(T) (psfont_text(T) ? NUM_FONTS : NUM_LATEX_FONTS)
#define rigid_text(t) \
(t->flags == DEFAULT \
|| (t->flags & RIGID_TEXT))
#define special_text(t) \
((t->flags != DEFAULT \
&& (t->flags & SPECIAL_TEXT)))
#define psfont_text(t) \
(t->flags != DEFAULT \
&& (t->flags & PSFONT_TEXT))
#define hidden_text(t) \
(t->flags != DEFAULT \
&& (t->flags & HIDDEN_TEXT))
#define text_length(t) \
(hidden_text(t) ? hidden_text_length : t->length)
#define using_ps (cur_textflags & PSFONT_TEXT)
typedef struct f_control {
float lx, ly, rx, ry;
struct f_control *next;
}
F_control;
/* SEE NOTE AT TOP BEFORE CHANGING ANYTHING IN THE f_spline STRUCTURE */
#define int_spline(s) (s->type & 0x2)
#define normal_spline(s) (!(s->type & 0x2))
#define closed_spline(s) (s->type & 0x1)
#define open_spline(s) (!(s->type & 0x1))
typedef struct f_spline {
int tagged;
int distrib;
int type;
#define T_OPEN_NORMAL 0
#define T_CLOSED_NORMAL 1
#define T_OPEN_INTERP 2
#define T_CLOSED_INTERP 3
int style;
int thickness;
Color pen_color;
Color fill_color;
int fill_style;
int depth;
int pen_style;
struct f_arrow *for_arrow;
struct f_arrow *back_arrow;
/* THE PRECEDING VARS MUST BE IN THE SAME ORDER IN f_arc, f_line and f_spline */
int cap_style;
/*
* For T_OPEN_NORMAL and T_CLOSED_NORMAL points are control points while
* they are knots for T_OPEN_INTERP and T_CLOSED_INTERP whose control
* points are stored in controls.
*/
struct f_point *points; /* this must immediately follow cap_style */
float style_val;
struct f_control *controls;
struct f_spline *next;
}
F_spline;
typedef struct f_compound {
int tagged;
int distrib;
struct f_pos nwcorner;
struct f_pos secorner;
struct f_line *lines;
struct f_ellipse *ellipses;
struct f_spline *splines;
struct f_text *texts;
struct f_arc *arcs;
struct f_compound *compounds;
struct f_compound *next;
}
F_compound;
typedef struct f_linkinfo {
struct f_line *line;
struct f_point *endpt;
struct f_point *prevpt;
int two_pts;
struct f_linkinfo *next;
}
F_linkinfo;
/* separate the "type" and the "style" from the cur_arrowtype */
#define ARROW_TYPE(x) ((x)==0? 0 : ((x)+1)/2)
#define ARROW_STYLE(x) ((x)==0? 0 : ((x)+1)%2)
#define ARROW_SIZE sizeof(struct f_arrow)
#define POINT_SIZE sizeof(struct f_point)
#define CONTROL_SIZE sizeof(struct f_control)
#define ELLOBJ_SIZE sizeof(struct f_ellipse)
#define ARCOBJ_SIZE sizeof(struct f_arc)
#define LINOBJ_SIZE sizeof(struct f_line)
#define TEXOBJ_SIZE sizeof(struct f_text)
#define SPLOBJ_SIZE sizeof(struct f_spline)
#define COMOBJ_SIZE sizeof(struct f_compound)
#define PIC_SIZE sizeof(struct f_pic)
#define LINKINFO_SIZE sizeof(struct f_linkinfo)
/********************** object codes **********************/
#define O_COLOR_DEF 0
#define O_ELLIPSE 1
#define O_POLYLINE 2
#define O_SPLINE 3
#define O_TEXT 4
#define O_ARC 5
#define O_COMPOUND 6
#define O_END_COMPOUND -O_COMPOUND
#define O_ALL_OBJECT 99
/********************* object masks for update ************************/
#define M_NONE 0x000
#define M_POLYLINE_POLYGON 0x001
#define M_POLYLINE_LINE 0x002
#define M_POLYLINE_BOX 0x004 /* includes ARCBOX */
#define M_SPLINE_O_NORMAL 0x008
#define M_SPLINE_C_NORMAL 0x010
#define M_SPLINE_O_INTERP 0x020
#define M_SPLINE_C_INTERP 0x040
#define M_TEXT_NORMAL 0x080
#define M_TEXT_HIDDEN 0x100
#define M_ARC 0x200
#define M_ELLIPSE 0x400
#define M_COMPOUND 0x800
#define M_TEXT (M_TEXT_HIDDEN | M_TEXT_NORMAL)
#define M_SPLINE_O (M_SPLINE_O_NORMAL | M_SPLINE_O_INTERP)
#define M_SPLINE_C (M_SPLINE_C_NORMAL | M_SPLINE_C_INTERP)
#define M_SPLINE_NORMAL (M_SPLINE_O_NORMAL | M_SPLINE_C_NORMAL)
#define M_SPLINE_INTERP (M_SPLINE_O_INTERP | M_SPLINE_C_INTERP)
#define M_SPLINE (M_SPLINE_NORMAL | M_SPLINE_INTERP)
#define M_POLYLINE (M_POLYLINE_LINE | M_POLYLINE_POLYGON | M_POLYLINE_BOX)
#define M_VARPTS_OBJECT (M_POLYLINE_LINE | M_POLYLINE_POLYGON | M_SPLINE)
#define M_OPEN_OBJECT (M_POLYLINE_LINE | M_SPLINE_O | M_ARC)
#define M_ROTATE_ANGLE (M_VARPTS_OBJECT | M_ARC | M_TEXT | M_COMPOUND | M_ELLIPSE)
#define M_ELLTEXTANGLE (M_ELLIPSE | M_TEXT)
#define M_OBJECT (M_ELLIPSE | M_POLYLINE | M_SPLINE | M_TEXT | M_ARC)
#define M_NO_TEXT (M_ELLIPSE | M_POLYLINE | M_SPLINE | M_COMPOUND | M_ARC)
#define M_ALL (M_OBJECT | M_COMPOUND)
/************************ Objects **********************/
extern F_compound objects;
/************ global working pointers ************/
extern F_line *cur_l, *new_l, *old_l;
extern F_arc *cur_a, *new_a, *old_a;
extern F_ellipse *cur_e, *new_e, *old_e;
extern F_text *cur_t, *new_t, *old_t;
extern F_spline *cur_s, *new_s, *old_s;
extern F_compound *cur_c, *new_c, *old_c;
extern F_point *first_point, *cur_point;
extern F_linkinfo *cur_links;
/*************** object attribute settings ***********/
/* Lines */
extern int cur_linewidth;
extern int cur_linestyle;
extern int cur_joinstyle;
extern int cur_capstyle;
extern float cur_dashlength;
extern float cur_dotgap;
extern float cur_styleval;
extern Color cur_fillcolor, cur_pencolor;
extern int cur_fillstyle, cur_penstyle;
extern int cur_boxradius;
extern int cur_arrowmode;
extern int cur_arrowtype;
extern int cur_arctype;
/* Text */
extern int cur_fontsize; /* font size */
extern int cur_latex_font;
extern int cur_ps_font;
extern int cur_textjust;
extern int cur_textflags;
/* Misc */
extern float cur_elltextangle;